package com.moss.common.util;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeUtil {


    private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    private static final String DATE_PATTERN = "yyyy-MM-dd";

    private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN);

    private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(DATE_PATTERN);


    private static final String TIME_ZONE = "GMT+8";



    public static String formatDate(LocalDate date){
        return dateFormatter.format(date);
    }


    /**
     * 解析字符串为 datetime
     * @param dateTimeStr 需要解析的字符串 yyyy-MM-dd HH:mm:ss格式
     * @return LocalDateTime
     */
    public static LocalDateTime parseDateTime(String dateTimeStr){
        return LocalDateTime.parse(dateTimeStr,dateTimeFormatter);
    }

    /**
     * 解析字符串为 datetime
     * @param dateStr 需要解析的字符串 yyyy-MM-dd格式
     * @return LocalDate
     */
    public static LocalDate parseDate(String dateStr){
        return LocalDate.parse(dateStr,dateFormatter);
    }

    /**
     * 日期数据转为当天开始时间
     * @param localDate yyyy-MM-dd时间
     * @return LocalDateTime
     */
    public static LocalDateTime dateOfStart(LocalDate localDate){
        return localDate.atTime(0,0,0);
    }

    /**
     * 日期数据转为当天开始时间
     * @param localDate yyyy-MM-dd时间
     * @return LocalDateTime
     */
    public static LocalDateTime dateOfEnd(LocalDate localDate){
        return localDate.atTime(23,59,59);
    }

    /**
     * 日期字符串转为当天LocalDateTime起始 ，yyyy-MM-dd 转为 yyyy-MM-dd HH:mm:ss
     * 例子 2024-01-01 => 2024-01-01 00:00:00
     * @param dateStr yyyy-MM-dd 时间
     * @return LocalDateTime
     */
    public static LocalDateTime date2TimeOfStart(String dateStr){
        return dateOfStart(parseDate(dateStr));
    }
}
